class CompetenciasController < ApplicationController
#MODULE: Configuraciones

  def index
  end

  def show
    redirect_to competencias_cargos_path(:competencia_id => params[:id])
  end

  def new
    @competencia = Competencia.new
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @competencia }
    end
  end

  def create
    @competencia = Competencia.new(params[:competencia])
    respond_to do |format|
      if @competencia.save
        flash[:notice] = "La competencia se cargo correctamente"
        if @competencia.tipo == 'general'
          #crear competencia cargo
          CompetenciaCargo.create(:competencia_id => @competencia.id, :cargo_id => nil)
          format.html { render :action => :edit }
        else
          format.html { params[:oper].nil? ? redirect_to(@competencia) : render(:text => "Ok")}
        end
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @competencia.errors, :status => :unprocessable_entity }
      end
    end
  end

  def new_descripcion
    @descripcion = Descripcion.new
    @competencia_cargo = CompetenciaCargo.find(:first, :conditions => ['competencia_id = ? AND cargo_id IS NULL', params[:competencia_id]] )
    render :update do |page|
      if @competencia_cargo
        page.insert_html :bottom, :descripcion_form, :partial => 'descripcion_form'
        page.hide :descripciones
      else
        page.insert_html :bottom, :descripcion_form, "Error en los datos"
      end
    end
  end

  def create_descripcion
    competencia_cargo = CompetenciaCargo.find params[:competencia_cargo_id]
    if competencia_cargo
      @competencia = competencia_cargo.competencia
      @success = (competencia_cargo.descripciones << Descripcion.create(params[:descripcion]))
      if @success
        flash[:notice] = "La descripcion fue agregada exitosamente"
      else
        flash[:notice] = "Ups! ocurrio un error al intentar guardar la descripcion"
      end
      render :action => :edit
    else
      redirect_to competencias_path
    end
  end

  def edit_descripcion
    @descripcion       = Descripcion.find(params[:descripcion_id])
    @competencia_cargo = @descripcion.competencia_cargo
    render :update do |page|
      if @competencia_cargo
        page.replace_html :descripcion_form, :partial => 'descripcion_form'
        page.hide :descripciones
      else
        page.replace_html :descripcion_form, "Error en los datos"
      end
    end
  end

  def update_descripcion
    competencia_cargo = CompetenciaCargo.find params[:competencia_cargo_id]
    if competencia_cargo
      @competencia = competencia_cargo.competencia
      @descripcion = Descripcion.find(params[:descripcion_id])
      @success = @descripcion.update_attributes(params[:descripcion])
      if @success
        flash[:notice] = "La descripcion fue actualizada exitosamente"
      else
        flash[:notice] = "Ups! ocurrio un error al intentar guardar la descripcion"
      end
      render :action => :edit
    else
      redirect_to competencias_path
    end
  end

  def destroy_descripcion
    @descripcion = Descripcion.find(params[:descripcion_id])
    if @descripcion
      @competencia = @descripcion.competencia_cargo.competencia
      @descripcion.destroy
      flash[:notice] = "La descripcion fue Eliminada"
    else
      flash[:notice] = "La descripcion no pudo ser eliminada"
      redirect_to competencias_path
    end
    render :action => :edit
  end

  def edit
    @competencia = Competencia.find params[:id]
  end

  def update
    @competencia = Competencia.find params[:id]
    respond_to do |format|
      if @competencia.update_attributes(params[:competencia])
        flash[:notice] = "La competencia se actualizo correctamente"
        format.html { redirect_to(@competencia) }
        format.xml  { head :ok }
      else
        format.html { render :action => 'edit'}
        format.xml  { render :xml => @competencia.errors, :status => :unprocessable_entity }
      end
    end
  end

  def destroy
    @competencia = Competencia.find params[:id]
    @competencia.destroy
    respond_to do |format|
      format.html { redirect_to(competencias_url) }
      format.xml  { head :ok }
    end
  end


    def datos #IGNORE
    #Parametros
    registros, count = find_by_params(params, :class => Competencia)
    # Construct a hash from the ActiveRecord result
    return_data = Hash.new()
    return_data[:page] = params[:page]
    return_data[:total] = (count.to_f / params[:rows].to_i).ceil
    return_data[:records] = count

    return_data[:rows] = registros.collect{|u| {:id=>u.id,
        :cell=>[
          u.titulo, u.tipo
        ]}}

    # Convert the hash to a json object
    render :text => return_data.to_json, :layout => false
  end

end

